package views.mediators {
  import com.axon.mvc.patterns.mediator.AxMediatorPopUp;

  import flash.display.DisplayObject;

  import helpers.Verbs;

  import models.vo.Pleito;

  import mx.binding.utils.BindingUtils;

  import views.components.PleitoPopUpEdicaoDataLaudoView;

  public class PleitoPopUpEdicaoDataLaudoMediator extends AxMediatorPopUp {
    private var _tipo:String;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function PleitoPopUpEdicaoDataLaudoMediator(parent:DisplayObject, pleito:Pleito, tipo:String) {
      _tipo = tipo;
      super(parent, pleito);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function get view():PleitoPopUpEdicaoDataLaudoView {
      return viewComponent as PleitoPopUpEdicaoDataLaudoView;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    override protected function initialize():void {
      regResponseInterest(Pleito, [Verbs.EDITAR_DATA_LAUDO]);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    override protected function viewValueObjectOk():void {
      view.tipo = _tipo;
      view.title = "Informe a nova data e/ou número para ";
      switch (_tipo) {
        case "relatPortariaMinuta":
        case "relatPortariaVersaoFinal":
          view.title += "a portaria";
          view.dtNovaData.selectedDate = view.vo.dataPortaria;
          view.txtNovoNumero.text = view.vo.numeroPortaria;
          break;
        case "relatLaudoMinuta":
        case "relatLaudoVersaoFinal":
          view.title += "o laudo";
          view.dtNovaData.selectedDate = view.vo.dataLaudo;
          view.txtNovoNumero.text = view.vo.numeroLaudo;
          break;
        case "relatOficioEmpresa":
          view.title += "o ofício";
          view.dtNovaData.selectedDate = view.vo.dataOficioEmpresa;
          view.txtNovoNumero.text = view.vo.numeroOficioEmpresa;
          break;
        case "relatOficioEmpresaLiberacao":
          view.title += "o ofício";
          view.dtNovaData.selectedDate = view.vo.dataOficioEmpresaLiberacao;
          view.txtNovoNumero.text = view.vo.numeroOficioEmpresaLiberacao;
          break;
        case "relatOficioReceita":
          view.title += "o ofício";
          view.dtNovaData.selectedDate = view.vo.dataOficioReceita;
          view.txtNovoNumero.text = view.vo.numeroOficioReceita;
          break;
        case "relatOficioBnb":
          view.title += "o ofício";
          view.dtNovaData.selectedDate = view.vo.dataOficioBnb;
          view.txtNovoNumero.text = view.vo.numeroOficioBnb;
          break;
        case "relatOficioMarinha":
          view.title += "o ofício";
          view.dtNovaData.selectedDate = view.vo.dataOficioMarinha;
          view.txtNovoNumero.text = view.vo.numeroOficioMarinha;
          break;
      }
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function respPleitoEditarDataLaudoSuccess(sender:Object, body:Object, extraInfo:Object):void {
      closePopUp();
    }

    public function respPleitoEditarDataLaudoFailure(sender:Object, body:Object, extraInfo:Object):void {
      view.errorString = "Falha na gravação dos dados (provavelmente algum problema no servidor).";
    }
  }
}